package cn.alm.serviceorder.feign;

import cn.alm.serviceorder.entity.Product;
import cn.alm.serviceorder.feign.fallback.ProductFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;

// value中指定需要远程调用的微服务名称
@FeignClient(value = "service-product", fallback = ProductFeignClientFallback.class)
public interface ProductFeignClient {

    @GetMapping("api/product/get/{id}")
    // 这里方法的形参列表，你希望放在请求的哪个位置，就标注什么注解
    // 比如id，我们希望是路径变量，就放在@PathVariable里
    // 如果我们希望放一个token在请求头里，则放在@RequestHeader里
    Product getProductById(@PathVariable("id") Long id);
//    Product getProductById(@PathVariable("id") Long id, @RequestHeader("x-token") String token);

}
